const express = require('express');
const cors = require('cors');
const path = require('path');
const fs = require('fs');

const app = express();
const port = process.env.PORT || 18880; 

// 中间件
app.use(cors());
app.use(express.json());

// 静态文件服务 - 支持多种目录结构
// 优先级：.output > dist > public
const staticDirs = [
  path.join(__dirname, '.output'),
  path.join(__dirname, 'dist'),
  path.join(__dirname, 'public')
];

let staticDir = null;
for (const dir of staticDirs) {
  if (fs.existsSync(dir)) {
    staticDir = dir;
    console.log(`使用静态文件目录: ${dir}`);
    break;
  }
}

if (staticDir) {
  app.use(express.static(staticDir));
}

// 文档服务（如果存在 pages/Doc 目录）
const docDir = path.join(__dirname, 'pages/Doc');
if (fs.existsSync(docDir)) {
  app.use('/docs', express.static(docDir));
  console.log('文档服务已启用: /docs');
}

// 模拟用户数据
const users = [
  { username: 'admin', password: 'admin123' }
];

// 健康检查接口
app.get('/health', (req, res) => {
  res.json({ 
    status: 'ok', 
    timestamp: new Date().toISOString(),
    staticDir: staticDir ? path.basename(staticDir) : 'none',
    environment: process.env.NODE_ENV || 'development'
  });
});

// GET 接口 - 测试服务器是否正常运行
app.get('/api/test', (req, res) => {
  res.json({ message: 'Server is running!' });
});

// POST 接口 - 处理登录请求
app.post('/api/auth/login', (req, res) => {
  console.log('收到登录请求:', req.body); // 添加日志
  const { username, password } = req.body;
  
  const user = users.find(u => u.username === username && u.password === password);
  
  if (user) {
    console.log('登录成功'); // 添加日志
    res.json({
      success: true,
      message: '登录成功',
      data: {
        username: user.username
      }
    });
  } else {
    console.log('登录失败：用户名或密码错误'); // 添加日志
    res.status(401).json({
      success: false,
      message: '用户名或密码错误'
    });
  }
});

// 404 处理 - 对于前端路由，返回 index.html
app.get('*', (req, res) => {
  if (staticDir) {
    const indexPath = path.join(staticDir, 'index.html');
    if (fs.existsSync(indexPath)) {
      res.sendFile(indexPath);
    } else {
      res.status(404).json({ error: 'Page not found' });
    }
  } else {
    res.status(404).json({ error: 'Static files not found' });
  }
});

app.listen(port, () => {
  console.log(`服务器运行在 http://localhost:${port}`);
  console.log(`环境: ${process.env.NODE_ENV || 'development'}`);
  console.log(`静态文件目录: ${staticDir || '未找到'}`);
}); 